home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1995-09-02 | 2.9 KB | 114 lines |
- ' Hi! This is just a little program to show, how this super
- ' soft scrolling works without any blitter copying...
- ' only two directions though...
- '
- Screen Open 1,304,8,4,0
- Curs Off : Flash Off : Paper 0 : Cls 0
- For A=0 To 31 : Colour A,0 : Next
- Palette 0,$F00,$F80,$F0
- Screen Display 1,128,41,304,8
- Pen 3 : Print "MEN: 00 GAS: 00 BALLAST: 00";
- Screen Open 0,672,200,4,0
- Flash Off : Curs Off : Cls 0 : Hide
- Get Sprite Palette
- For A=0 To 15 : Colour A+16,Colour(A) : Next
- Palette 0,$660,$990,$CC0
- Screen Display 0,144,50,304,200
- MAKE
- Make Mask
- Set Rainbow 1,3,242,"","",""
- GC=0 : BC=15
- For A=0 To 241
- Rain(1,A)=GC*$110+BC
- If(A mod 13)=12 and GC<15 Then Inc GC : Rain(1,A-1)=GC*$110+BC
- Next
- Rainbow 1,0,49,202
- X=0 : OP=0 : OX=0 : MX=0
- A$="A: L X=RD/300-10; P; J A;"
- Channel 9 To Rainbow 1
- Amal 9,A$
- A$="L R0=14400; L R1=3800; L R4=2; L R2=0; L R3=0; "
- A$=A$+"A: P; L RC=R0; L RD=R1; L R3=R3+1; L R0=R0+R2; "
- A$=A$+" L R1=R1+R3; L X=R0/50; L Y=R1/50; "
- A$=A$+" I J1&4 J L; "
- A$=A$+" I J1&8 J R; "
- A$=A$+"B: I J1&1 J U; "
- A$=A$+" I J1&2 J D;"
- A$=A$+" L A=1; "
- A$=A$+"C: I R0<7200 J V;"
- A$=A$+" I R0>21600 J Y; "
- A$=A$+"E: I R1<2550 J X; "
- A$=A$+"F: J A;"
- A$=A$+"V: L R0=7200; L X=R0/50; J E; "
- A$=A$+"Y: Let R0=21600; L X=R0/50; J E; "
- A$=A$+"X: Let R1=2550; L Y=R1/50; J F; "
- A$=A$+"L: I R2<-200 J B; L R2=R2-R4; J B; "
- A$=A$+"R: I R2>200 J B; L R2=R2+R4; J B; "
- A$=A$+"U: L A=2; L R3=R3-R4-1; J C; "
- A$=A$+"D: L R3=R3-20; J C; "
- Cls 3
- Screen Offset 0,32,0
- For A=0 To 304
- X=335+A
- Y=Peek(Start(9)+A)
- Set Line Rnd($FFFF)
- Ink 2,1 : Draw X+16,Y To X+16,199
- Next
- Screen Copy 0,335,0,656,200 To 0,15,0
- Sprite 0,0,0,1
- Channel 0 To Sprite 0
- Amal 0,A$
- Amal On 0
- Amal On 9
- Rem 20654321654321
- Doke $DFF098,%11000011000001
- L=9999
- A=Peek($DFF00F)
- ES=0
- Repeat
- Wait Vbl : Gosub SCROL
- A=Peek($DFF00F) and 6
- If A Then Colour 0,Rnd(4095)
- Until Y Sprite(0)>250
- End
- SCROL:
- XX=Amreg(0,0)
- If XX<12000 Then Gosub SCRLEFT
- If XX<10000 Then Gosub SCRLEFT
- If XX>16800 Then Gosub SCRRIGHT
- If XX>18800 Then Gosub SCRRIGHT
- Return
- SCRLEFT:
- Amreg(0,0)=Amreg(0,0)+50
- Dec OP : If OP<0 Then Add OP,16 : Add OX,-16 : If OX<0 Then Add OX,320
- Set Line $FFFF
- X=31+OX+OP : Ink 3 : Draw X,0 To X,199
- Y=Peek(Start(9)+MX)
- Set Line Rnd($FFFF)
- Ink 2,1 : Draw X,Y To X,199
- Add MX,-1,0 To L
- Screen Offset 0,32+OX+OP,0
- Screen Copy 0,X,0,X+1,200 To 0,X+320,0
- Return
- SCRRIGHT:
- Amreg(0,0)=Amreg(0,0)-50
- Inc OP : If OP>15 Then Add OP,-16 : Add OX,16 : If OX>319 Then Add OX,-320
- Set Line $FFFF
- X=335+OX+OP : Ink 3 : Draw X,0 To X,199
- MXX=(MX+304) mod L
- Y=Peek(Start(9)+MXX)
- Set Line Rnd($FFFF)
- Ink 2,1 : Draw X,Y To X,199
- Add MX,1,0 To L
- Screen Offset 0,32+OX+OP,0
- Screen Copy 0,X,0,X+1,200 To 0,X-320,0
- Return
- Procedure MAKE
- Erase 9 : Reserve As Work 9,10000
- Y=180
- For A=0 To 9999
- Poke Start(9)+A,Y
- UY=Rnd(6)-3
- Y=Max(Min(Y+UY,180),30)
- Next
- End Proc